home *** CD-ROM | disk | FTP | other *** search
- /* "FILE's" link to rk_button, written by John Darragh, Calgary, revised 3-89
- *
- * these are the main function used by file+rk.c to generate predictions
- */
- #include <MacIncludes.h>
-
- #include "Rk.h"
- #include "Structs.h"
- #include "rk_button.h"
- #include "FILE+RK.H"
-
- int pred_number = 0;
-
- int pred_number;
-
- extern PrefHandle gStartPrefs,gPrefs;
- extern GrafPtr gPredict;
- extern short gContextBar;
- /* ED_STRUCT editor_data; */
-
- extern char first[MAX_SET], /* Defined in rk_button.c */
- ed_context[MAX_CMD_LINE_LENGTH];
- extern Buffer Buf, CBuf;
- extern char *prime_file;
- extern char pred_on_display;
-
- static char temp[1024]; /* scratch string buf */
-
-
- make_a_prediction (s) char *s; { /* sets s to the current prediction */
-
- char *a = temp; int length, i;
-
- strcpy (temp, ed_context);
- length = strlen (temp);
- temp[length] = '\0';
- if (length > (*gStartPrefs)->pOrder) a = &temp[length - (*gStartPrefs)->pOrder];
-
- for (i=1; i<=(*gStartPrefs)->pOrder; i++) CBuf[i] = nil;
- while (*a) {
- for (i=(*gStartPrefs)->pOrder; i>0; i--) CBuf[i] = scan_up(CBuf[i-1],*a);
- a++;
- }
- find_first(CBuf);
- build_menu(CBuf, s);
- }
-
- update_the_model()
- {
- /* adds context into the model*/
-
- char *s = ed_context;
- char *a = s, *c = s; int length, i;
-
- if (strlen(s) < (*gStartPrefs)->pOrder) {
- strcpy (temp, s);
- length = strlen (temp);
- if (length > (*gStartPrefs)->pOrder) a = &temp[length - (*gStartPrefs)->pOrder];
- else a = temp;
- }
- while (*c) {
- for (i=(*gStartPrefs)->pOrder; i>0; i--) Buf[i] = move_up(Buf[i-1],*c);
- c++;
- }
- }
-
- build_menu(buf,s) Buffer buf; char *s; { /* fill out prediction in s */
-
- int i,j,length; Buffer tbuf; char *bptr = s, c;
-
- length = ((gPredict->portRect.right-gPredict->portRect.left)-gContextBar)/CharWidth(' ')-1;
- if(length==0) length=0;
-
- c = first[pred_number];
- for (i=0; i<=(*gStartPrefs)->pOrder; i++) tbuf[i] = buf[i];
- for (i=1; i<=length; i++) {
- if (!(!(*gPrefs)->pshowSpecial && (c == '\n') && (i==1)))
- *bptr++ = c;
- if ((*gPrefs)->pstopAtCR && (c == '\n')) goto bp;
- for (j=(*gStartPrefs)->pOrder; j>=1; j--) tbuf[j] = scan_up (tbuf[j-1],c);
- c = first_pred(tbuf);
- }
- bp: *bptr = '\0';
- }
-
-
- shutdown_() {
- FILE *to;
- if ((to = fopen (prime_file, "a")) != NULL) {
- fputs ("\07", to); fflush (to); fclose(to);
- }
- }
-
- abortit (message, status)
- char *message;
- int status;
- {
- char dbinfo[150];
- #pragma unused (status)
- debugstr(message);
- sprintf(dbinfo,"gStartPrefs.pOrder: %d, gStartPrefs.pStartup: %d",(*gStartPrefs)->pOrder,(*gStartPrefs)->pStartup);
- debugstr(dbinfo);
- ExitToShell();
- }
-
- int
- get_display_length(s)
- char *s;
- {
-
- char *cptr;
- int len;
-
- cptr = s;
- len = 0;
- while (*cptr) {
- if ((*cptr < 32) || (*cptr == 127))
- len += 2;
- else
- len++;
- ++cptr;
- }
- return len;
- }
-